<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // forEach方法为每个数组调用一次函数（回调函数）
        // 该函数接受3个参数 项目值value、索引index、数组本身array
        var txt = "";
        var numbers = [45, 4, 9, 16, 25];
        numbers.forEach(myFunction);
        function myFunction(value) {
            txt = txt + value + "<br>";
        }
        console.log(txt); // 45<br>4<br>9<br>16<br>25<br>
        // map方法为每个数组元素调用一次函数（回调函数）,然后生成一个新的数组
        var numbers1 = [45, 4, 9, 16, 25];
        var numbers2 = numbers1.map(myFunction);
        function myFunction(value) {
            return value * 2;
        }
        console.log(numbers2); // [90, 8, 18, 32, 50]
        // filter方法为每个数组元素调用一次函数（回调函数），然后返回一个包含所有通过测试的元素的新数组
        var numbers = [45, 4, 9, 16, 25];
        var over18 = numbers.filter(myFunction);
        function myFunction(value) {
            return value > 18;
        }
        console.log(over18); // [45, 25]
        // reduce方法对数组的每个元素应用一个函数（回调函数），然后返回最终结果
        var numbers1 = [45, 4, 9, 16, 25];
        var sum = numbers1.reduce(myFunction);
        function myFunction(total, value, index, array) {
            return total + value;
        }
        console.log(sum); // 124
        // reduceRight方法与reduce方法类似，但它是从右到左执行回调函数
        // reverse方法将数组反转
        // join方法将数组转换为字符串，并用指定分隔符连接
        // indexOf方法返回数组中第一个匹配项的索引，否则返回-1
        // find方法返回数组中满足测试函数的第一个元素的值，否则返回undefined
        // findIndex方法返回数组中满足测试函数的第一个元素的索引，否则返回-1
        // some方法测试数组中是否至少有一个元素通过测试函数，如果有则返回true，否则返回false
        // every方法测试数组中是否所有元素都通过测试函数，如果所有元素都通过则返回true，否则返回false
        // sort方法对数组进行排序，排序规则由回调函数定义
    </script>
</body>

</html>